set.seed(1014)

knitr::knit_hooks$set(inline = function(x) prettyNum(x, big.mark = ".", decimal.mark = ","))

options(
  digits = 1,
  scipen = 999,
  OutDec = ",",
  knitr.kable.NA = "",
  radian.auto_match = FALSE
)

Sys.setenv(LANGUAGE = "pt-br")
Sys.setlocale("LC_TIME", "pt_BR")
#> [1] ""
library(tidyverse)
library(lubridate)
library(here)
`%notin%` <- function(x, y) !(x %in% y)
source(here("src/0-paleta-de-cores.R"), encoding = "UTF-8")

theme_set(theme_minimal())

theme_update(
  panel.grid.minor = element_blank(),
  panel.background = element_rect(fill = "gray97", color = "transparent")
)

my_lbl <- function(x) scales::percent(x, decimal.mark = ",", accuracy = 0.1)
pedidos_cgu <- "dados/load/rds/pedidos-cgu.rds" %>% 
  here() %>% 
  readRDS() %>%
  rename(orgao = orgaodestinatario) %>% 
  filter(decisao %notin% c(
    "Pergunta Duplicada/Repetida",
    "Não se trata de solicitação de informação"
  ))

recursos_cgu <- "dados/load/rds/recursos-cgu.rds" %>% 
  here() %>% 
  readRDS() %>%
  rename(orgao = orgaodestinatario) %>% 
  distinct() %>% 
  group_by(id_pedido) %>% 
  filter(row_number() == 1) %>% 
  ungroup()

pedidos_clean <- "dados/load/rds/pedidos-clean.rds" %>% 
  here() %>% 
  readRDS() 

recursos_clean <- "dados/load/rds/recursos-clean.rds" %>% 
  here() %>% 
  readRDS() %>% 
  distinct() %>% 
  group_by(id_pedido) %>% 
  filter(row_number() == 1) %>% 
  ungroup()
pedidos_clean <- pedidos_clean %>% 
  left_join(select(pedidos_cgu, id_pedido, data_registro)) %>%
  mutate(
    usa_lgpd_pedido_resumido = if_else(
      year(data_registro) > 2017,
      str_detect(resumo_solicitacao_clean, "LGPD"),
      FALSE
    ),
    usa_lgpd_pedido = if_else(
      year(data_registro) > 2017,
      str_detect(detalhamento_solicitacao_clean, "LGPD"),
      FALSE
    ),
    usa_lgpd_resposta = if_else(
      year(data_registro) > 2017,
      str_detect(resposta_clean, "LGPD"),
      FALSE
    )
  ) %>% select(-data_registro)

recursos_clean <- recursos_clean %>% 
  left_join(select(recursos_cgu, id_pedido, id_recurso, data_registro)) %>%
  mutate(
    usa_lgpd_recurso = if_else(
      year(data_registro) > 2017,
      str_detect(desc_recurso_clean, "LGPD"),
      FALSE
    ),
    usa_lgpd_resposta_recurso = if_else(
      year(data_registro) > 2017,
      str_detect(resposta_recurso_clean, "LGPD"),
      FALSE
    ),
    usa_lgpd = usa_lgpd_recurso | usa_lgpd_resposta_recurso
  ) %>% select(-data_registro)

lgpd <- pedidos_cgu %>% 
  select(
    id_pedido, orgao, data_registro,
    resumo_solicitacao, detalhamento_solicitacao, 
    resposta, decisao, assunto_pedido
  ) %>% 
  left_join(pedidos_clean) %>%
  mutate(
    usa_lgpd_assunto = assunto_pedido == "Dados Pessoais - LGPD",
    usa_lgpd_pedido_resumido = replace_na(usa_lgpd_pedido_resumido, FALSE),
    usa_lgpd = !(
      !usa_lgpd_pedido_resumido & 
      !usa_lgpd_pedido &
      !usa_lgpd_resposta & 
      !usa_lgpd_assunto
  ))
library(tidytext)
library(wordcloud)
source(here("./src/5-funcao-limpando-texto.R"), encoding = "utf-8")
rgx_sigla <- "^[:upper:]+(?= )|^[:upper:]+-PR|^FUNRei|^MTur|UFCAT$"

lgpd_nested <- lgpd %>% 
  filter(decisao == "Acesso Negado", data_registro > ymd("2017-06-01")) %>% 
  mutate(
    onde = usa_lgpd_resposta &
     !usa_lgpd_pedido & 
     !usa_lgpd_pedido_resumido & 
     assunto_pedido != "Dados Pessoais - LGPD"
  ) %>%
  add_count(orgao, onde, name = "n_pedidos") %>%
  filter(onde) %>%
  left_join(
    select(pedidos_cgu, id_pedido, ts_resposta, data_resposta)
  ) %>% 
  mutate(
    ts_resposta = dmy(ts_resposta),
    vigencia_lgpd = ts_resposta >= ymd("2020-11-18"),
    orgao_sigla = str_extract(orgao, rgx_sigla)
  ) %>% 
  select(
    id_pedido, orgao, orgao_sigla, data_registro, assunto_pedido,
    vigencia_lgpd, decisao, resumo_solicitacao, contains("clean"), n_pedidos
  )
plot_wordcloud_mencao_lgpd <- function(df, campo, nome_orgao, em_vigencia) {
  
  print(nome_orgao)
  
  df <- lgpd_nested %>% 
    filter(orgao_sigla == nome_orgao) %>% 
    select(id_pedido, vigencia_lgpd, campo)
  
  if (em_vigencia) {
    df <- df %>% filter(vigencia_lgpd)
  }

  df <- df %>%
    unnest_tokens(word, campo) %>%
    anti_join(stopwords) %>%
    mutate(
      word = str_extract(word, "[a-z']+"),
      word = if_else(word == "urltag", "link-url", word),
      word = str_replace_all(word, "artigosexto", "Artigo 6"),
      word = str_replace_all(word, "artigosetimo", "Artigo 7")
    ) %>%
    filter(!str_count(word) %in% c(1, 2)) %>%
    count(word, sort = T)

  titulo <- if_else(
    campo == "resposta_clean",
    "Frequência de palavras na resposta",
    "Frequência de palavras no pedido"
  )

  titulo <- if_else(
    em_vigencia,
    str_glue("{titulo}\napós a vigência da LGPD"),
    str_glue("{titulo}\ntodo período"),
  )
  
  cor_do_campo <- if_else(
    campo == "resposta_clean",
    cores_aep[["rosa"]],
    cores_tb[["azul"]]
  )

  layout(matrix(c(1, 2), nrow = 2), heights = c(.5, 6))
  par(mar = rep(0, 4))
  plot.new()
  text(x = 0.5, y = 0.5, titulo)

  df %>% with(
    wordcloud(
      word, n,
      scale = c(6,.5),
      max.words = 150,
      random.order = F,
      random.color = F,
      main = title,
      colors = cor_do_campo
    )
  )

}
esic_url <- "http://www.consultaesic.cgu.gov.br/busca/_layouts/15/DetalhePedido/DetalhePedido.aspx?nup="

tabela_com_links <- function(df) {
  df %>% 
  left_join(select(pedidos_cgu, id_pedido, protocolo_pedido, ts_registro)) %>% 
  transmute(
    Protocolo = str_glue(
      '<a href="{esic_url}{protocolo_pedido}">{protocolo_pedido}</a>'
    ),
    `Órgão (sigla)` = orgao_sigla,
    `Data registro` = dmy(ts_registro),
    Assunto = assunto_pedido,
    `Resumo pedido` = resumo_solicitacao
  ) %>% 
  DT::datatable(
    caption = str_glue(
      'Acessos negados mencionando a LGPD ',
      '(clique no nº de protocolo para acessar o pedido no E-sic)'
    ),
    options = list(pageLength = 5, dom = 'tip'),
    filter = 'top',
    escape = FALSE
  ) 
}

GSI-PR – Gabinete de Segurança Institucional da Presidência da República

O GSI fez as negaticas baseada na LGPD após a viggência da legislação;

lgpd_nested %>%
  filter(orgao_sigla == "GSI-PR") %>% 
  plot_wordcloud_mencao_lgpd(
    campo = "detalhamento_solicitacao_clean",
    nome_orgao = "GSI-PR",
    em_vigencia = T
  )
#> [1] "GSI-PR"

  
lgpd_nested %>%
  filter(orgao_sigla == "GSI-PR") %>% 
  plot_wordcloud_mencao_lgpd(
    campo = "resposta_clean",
    nome_orgao = "GSI-PR",
    em_vigencia = T
  )
#> [1] "GSI-PR"

Lista completa

lgpd_nested %>%
  filter(orgao_sigla == "GSI-PR") %>% 
  tabela_com_links()

MS – Ministério da Saúde

Todo período

lgpd_nested %>%
  filter(orgao_sigla == "MS") %>% 
  plot_wordcloud_mencao_lgpd(
    campo = "detalhamento_solicitacao_clean",
    nome_orgao = "MS",
    em_vigencia = F
  ) 
#> [1] "MS"

  
lgpd_nested %>%
  filter(orgao_sigla == "MS") %>% 
  plot_wordcloud_mencao_lgpd(
    campo = "resposta_clean",
    nome_orgao = "MS",
    em_vigencia = F
  )
#> [1] "MS"

Lista completa - todo período

lgpd_nested %>%
  filter(orgao_sigla == "MS") %>% 
  tabela_com_links()

Após a vigência da LGPD

lgpd_nested %>%
  filter(orgao_sigla == "MS") %>% 
  plot_wordcloud_mencao_lgpd(
    campo = "detalhamento_solicitacao_clean",
    nome_orgao = "MS",
    em_vigencia = T
  )
#> [1] "MS"

  
lgpd_nested %>%
  filter(orgao_sigla == "MS") %>% 
  plot_wordcloud_mencao_lgpd(
    campo = "resposta_clean",
    nome_orgao = "MS",
    em_vigencia = T
  )
#> [1] "MS"

Lista completa - após a vigência da LGPD

lgpd_nested %>%
  filter(orgao_sigla == "MS") %>%
  filter(vigencia_lgpd) %>% 
  tabela_com_links()

ME - Ministério da Economia

Todo período

lgpd_nested %>%
  filter(orgao_sigla == "ME") %>% 
  plot_wordcloud_mencao_lgpd(
    campo = "detalhamento_solicitacao_clean",
    nome_orgao = "ME",
    em_vigencia = F
  )
#> [1] "ME"

  
lgpd_nested %>%
  filter(orgao_sigla == "ME") %>% 
  plot_wordcloud_mencao_lgpd(
    campo = "resposta_clean",
    nome_orgao = "ME",
    em_vigencia = F
  )
#> [1] "ME"

Lista completa - todo período

lgpd_nested %>%
  filter(orgao_sigla == "ME") %>% 
  tabela_com_links()

Após a vigência da LGPD

lgpd_nested %>%
  filter(orgao_sigla == "ME") %>% 
  plot_wordcloud_mencao_lgpd(
    campo = "detalhamento_solicitacao_clean",
    nome_orgao = "ME",
    em_vigencia = T
  )
#> [1] "ME"

  
lgpd_nested %>%
  filter(orgao_sigla == "ME") %>% 
  plot_wordcloud_mencao_lgpd(
    campo = "resposta_clean",
    nome_orgao = "ME",
    em_vigencia = T
  )
#> [1] "ME"

Lista completa - após a vigência da LGPD

lgpd_nested %>%
  filter(orgao_sigla == "ME") %>%
  filter(vigencia_lgpd) %>% 
  tabela_com_links()

INSS – Instituto Nacional do Seguro Social

Todo período

lgpd_nested %>%
  filter(orgao_sigla == "INSS") %>% 
  plot_wordcloud_mencao_lgpd(
    campo = "detalhamento_solicitacao_clean",
    nome_orgao = "INSS",
    em_vigencia = F
  )
#> [1] "INSS"

  
lgpd_nested %>%
  filter(orgao_sigla == "INSS") %>% 
  plot_wordcloud_mencao_lgpd(
    campo = "resposta_clean",
    nome_orgao = "INSS",
    em_vigencia = F
  )
#> [1] "INSS"

Lista completa - todo período

lgpd_nested %>%
  filter(orgao_sigla == "INSS") %>% 
  tabela_com_links()

Após a vigência da LGPD

lgpd_nested %>%
  filter(orgao_sigla == "INSS") %>% 
  plot_wordcloud_mencao_lgpd(
    campo = "detalhamento_solicitacao_clean",
    nome_orgao = "INSS",
    em_vigencia = T
  )
#> [1] "INSS"

  
lgpd_nested %>%
  filter(orgao_sigla == "INSE") %>% 
  plot_wordcloud_mencao_lgpd(
    campo = "resposta_clean",
    nome_orgao = "INSS",
    em_vigencia = T
  )
#> [1] "INSS"

INCRA – Instituto Nacional de Colonização e Reforma Agrária

O INCRA fez as negaticas baseada na LGPD após a viggência da legislação;

lgpd_nested %>%
  filter(orgao_sigla == "INCRA") %>% 
  plot_wordcloud_mencao_lgpd(
    campo = "detalhamento_solicitacao_clean",
    nome_orgao = "INCRA",
    em_vigencia = T
  )
#> [1] "INCRA"

  
lgpd_nested %>%
  filter(orgao_sigla == "INCRA") %>% 
  plot_wordcloud_mencao_lgpd(
    campo = "resposta_clean",
    nome_orgao = "INCRA",
    em_vigencia = T
  )
#> [1] "INCRA"

Lista completa - todo período

lgpd_nested %>%
  filter(orgao_sigla == "INCRA") %>% 
  tabela_com_links()

CNPQ – Conselho Nacional de Desenvolvimento Científico e Tecnológico

Todo período

lgpd_nested %>%
  filter(orgao_sigla == "CNPQ") %>% 
  plot_wordcloud_mencao_lgpd(
    campo = "detalhamento_solicitacao_clean",
    nome_orgao = "CNPQ",
    em_vigencia = F
  )
#> [1] "CNPQ"

  
lgpd_nested %>%
  filter(orgao_sigla == "CNPQ") %>% 
  plot_wordcloud_mencao_lgpd(
    campo = "resposta_clean",
    nome_orgao = "CNPQ",
    em_vigencia = F
  )
#> [1] "CNPQ"

Lista completa - todo período

lgpd_nested %>%
  filter(orgao_sigla == "CNPQ") %>% 
  tabela_com_links()

Após a vigência da LGPD

lgpd_nested %>%
  filter(orgao_sigla == "CNPQ") %>% 
  plot_wordcloud_mencao_lgpd(
    campo = "detalhamento_solicitacao_clean",
    nome_orgao = "CNPQ",
    em_vigencia = T
  )
#> [1] "CNPQ"

  
lgpd_nested %>%
  filter(orgao_sigla == "CNPQ") %>% 
  plot_wordcloud_mencao_lgpd(
    campo = "resposta_clean",
    nome_orgao = "CNPQ",
    em_vigencia = T
  )
#> [1] "CNPQ"

Lista completa - após a vigência da LGPD

lgpd_nested %>%
  filter(orgao_sigla == "CNPQ") %>%
  filter(vigencia_lgpd) %>% 
  tabela_com_links()

BB – Banco do Brasil S.A.

Todo período

lgpd_nested %>%
  filter(orgao_sigla == "BB") %>% 
  plot_wordcloud_mencao_lgpd(
    campo = "detalhamento_solicitacao_clean",
    nome_orgao = "BB",
    em_vigencia = F
  )
#> [1] "BB"

  
lgpd_nested %>%
  filter(orgao_sigla == "BB") %>% 
  plot_wordcloud_mencao_lgpd(
    campo = "resposta_clean",
    nome_orgao = "BB",
    em_vigencia = F
  )
#> [1] "BB"

Lista completa - todo período

lgpd_nested %>%
  filter(orgao_sigla == "BB") %>% 
  tabela_com_links()

Após a vigência da LGPD

lgpd_nested %>%
  filter(orgao_sigla == "BB") %>% 
  plot_wordcloud_mencao_lgpd(
    campo = "detalhamento_solicitacao_clean",
    nome_orgao = "BB",
    em_vigencia = T
  )
#> [1] "BB"

  
lgpd_nested %>%
  filter(orgao_sigla == "BB") %>% 
  plot_wordcloud_mencao_lgpd(
    campo = "resposta_clean",
    nome_orgao = "BB",
    em_vigencia = T
  )
#> [1] "BB"

Lista completa - após a vigência da LGPD

lgpd_nested %>%
  filter(orgao_sigla == "BB") %>%
  filter(vigencia_lgpd) %>% 
  tabela_com_links()

INEP – Instituto Nacional de Estudos e Pesquisas Educacionais Anísio Teixeira

Todo período

lgpd_nested %>%
  filter(orgao_sigla == "INEP") %>% 
  plot_wordcloud_mencao_lgpd(
    campo = "detalhamento_solicitacao_clean",
    nome_orgao = "INEP",
    em_vigencia = F
  )
#> [1] "INEP"

  
lgpd_nested %>%
  filter(orgao_sigla == "INEP") %>% 
  plot_wordcloud_mencao_lgpd(
    campo = "resposta_clean",
    nome_orgao = "INEP",
    em_vigencia = F
  )
#> [1] "INEP"

Lista completa - todo período

lgpd_nested %>%
  filter(orgao_sigla == "INEP") %>% 
  tabela_com_links()

Após a vigência da LGPD

lgpd_nested %>%
  filter(orgao_sigla == "INEP") %>% 
  plot_wordcloud_mencao_lgpd(
    campo = "detalhamento_solicitacao_clean",
    nome_orgao = "INEP",
    em_vigencia = T
  )
#> [1] "INEP"

  
lgpd_nested %>%
  filter(orgao_sigla == "INEP") %>% 
  plot_wordcloud_mencao_lgpd(
    campo = "resposta_clean",
    nome_orgao = "INEP",
    em_vigencia = T
  )
#> [1] "INEP"

Lista completa - após a vigência da LGPD

lgpd_nested %>%
  filter(orgao_sigla == "INEP") %>%
  filter(vigencia_lgpd) %>% 
  tabela_com_links()

ANEEL – Agência Nacional de Energia Elétrica

Todo período

lgpd_nested %>%
  filter(orgao_sigla == "ANEEL") %>% 
  plot_wordcloud_mencao_lgpd(
    campo = "detalhamento_solicitacao_clean",
    nome_orgao = "ANEEL",
    em_vigencia = F
  )
#> [1] "ANEEL"

  
lgpd_nested %>%
  filter(orgao_sigla == "ANEEL") %>% 
  plot_wordcloud_mencao_lgpd(
    campo = "resposta_clean",
    nome_orgao = "ANEEL",
    em_vigencia = F
  )
#> [1] "ANEEL"

Lista completa - todo período

lgpd_nested %>%
  filter(orgao_sigla == "ANEEL") %>% 
  tabela_com_links()

Após a vigência da LGPD

lgpd_nested %>%
  filter(orgao_sigla == "ANEEL") %>% 
  plot_wordcloud_mencao_lgpd(
    campo = "detalhamento_solicitacao_clean",
    nome_orgao = "ANEEL",
    em_vigencia = T
  )
#> [1] "ANEEL"

  
lgpd_nested %>%
  filter(orgao_sigla == "ANEEL") %>% 
  plot_wordcloud_mencao_lgpd(
    campo = "resposta_clean",
    nome_orgao = "ANEEL",
    em_vigencia = T
  )
#> [1] "ANEEL"

Lista completa - após a vigência da LGPD

lgpd_nested %>%
  filter(orgao_sigla == "ANEEL") %>%
  filter(vigencia_lgpd) %>% 
  tabela_com_links()

MD – Ministério da Defesa

Todo período

lgpd_nested %>%
  filter(orgao_sigla == "MD") %>% 
  plot_wordcloud_mencao_lgpd(
    campo = "detalhamento_solicitacao_clean",
    nome_orgao = "MD",
    em_vigencia = F
  )
#> [1] "MD"

  
lgpd_nested %>%
  filter(orgao_sigla == "MD") %>% 
  plot_wordcloud_mencao_lgpd(
    campo = "resposta_clean",
    nome_orgao = "MD",
    em_vigencia = F
  )
#> [1] "MD"

Lista completa - todo período

lgpd_nested %>%
  filter(orgao_sigla == "MD") %>% 
  tabela_com_links()

Após a vigência da LGPD

lgpd_nested %>%
  filter(orgao_sigla == "MD") %>% 
  plot_wordcloud_mencao_lgpd(
    campo = "detalhamento_solicitacao_clean",
    nome_orgao = "MD",
    em_vigencia = T
  )
#> [1] "MD"

  
lgpd_nested %>%
  filter(orgao_sigla == "MD") %>% 
  plot_wordcloud_mencao_lgpd(
    campo = "resposta_clean",
    nome_orgao = "MD",
    em_vigencia = T
  )
#> [1] "MD"

Lista completa - após a vigência da LGPD

lgpd_nested %>%
  filter(orgao_sigla == "MD") %>%
  filter(vigencia_lgpd) %>% 
  tabela_com_links()